﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Library.BLL;

namespace View
{
    public partial class frmLocalidades : Form
    {

        #region declaracao dos DataTables
        DataTable dtUFs;
        DataTable dtCidades;
        DataTable dtTipoLocal;
        #endregion
        
        #region declaracao dos controllers
        CidadeController ctrlCidade = new CidadeController();
        UFController ctrlUF = new UFController();
        TipoLocalController ctrlTipoLocal = new TipoLocalController();
        #endregion

        public frmLocalidades()
        {
            InitializeComponent();
        }

        private void bindingDados()
        {

            //Carrega Tipos de Local
            dtTipoLocal = ctrlTipoLocal.getAllRecords();

            cbTipoLocal.DataSource = dtTipoLocal;
            cbTipoLocal.DisplayMember = "FATOR";
            cbTipoLocal.ValueMember = "COD_TIPO_LOCAL";

            txtTipoLocal.DataBindings.Add("Text",dtTipoLocal,"COD_TIPO_LOCAL");

            //Carrega UF e Cidade
            dtUFs = ctrlUF.getAllRecords();

            cbUF.DataSource = dtUFs;
            cbUF.DisplayMember = "SIGLA_ESTADO";
            cbUF.ValueMember = "SIGLA_ESTADO";
        }

        private void populaCidades()
        {
            dtCidades = ctrlCidade.getCidadesPorEstado(dtUFs.Rows[cbUF.SelectedIndex]["SIGLA_ESTADO"].ToString());

            cbCidades.DataSource = dtCidades;
            cbCidades.DisplayMember = "NOME_CIDADE";
            cbCidades.ValueMember = "COD_CIDADE";
        }

        private void frmLocalidades_Load(object sender, EventArgs e)
        {
            bindingDados();
        }

        private void cbUF_SelectedIndexChanged(object sender, EventArgs e)
        {
            populaCidades();
        }

        private void cbCidades_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbCidades.SelectedIndex != -1)
            {
                cbTipoLocal.SelectedIndex = dtTipoLocal.Rows.IndexOf(dtTipoLocal.Select("COD_TIPO_LOCAL = " + dtCidades.Rows[cbCidades.SelectedIndex]["COD_TIPO_LOCAL"].ToString())[0]);

                txtMunicipio.Text = dtCidades.Rows[cbCidades.SelectedIndex]["NOME_CIDADE"].ToString();
                txtUF.Text = dtCidades.Rows[cbCidades.SelectedIndex]["SIGLA_ESTADO"].ToString();

            }
           
        }

        private void btnAlterar_Click(object sender, EventArgs e)
        {
            //Abre atualização do Data Source
            dtCidades.Rows[cbCidades.SelectedIndex].BeginEdit();
            dtCidades.Rows[cbCidades.SelectedIndex]["COD_TIPO_LOCAL"] = cbTipoLocal.SelectedValue;
            dtCidades.Rows[cbCidades.SelectedIndex].EndEdit();
            
            //Faz alteração do tipo da localidade
            bool sucesso = ctrlCidade.UpdateDataTable(dtCidades.GetChanges());

            if (sucesso)
            {
                dtCidades.AcceptChanges();
                MessageBox.Show("Dados atualizados com sucesso!", "Confirmação de atualização", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else 
            { 
                dtCidades.RejectChanges();
                MessageBox.Show("Erro a atualizar os dados!", "Erro de atualização", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

    }
}
